Macro Define

자료 크기 지정을 위한 자료형 정의
typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned long u32;
메모리 접근을 위한 메크로 정의
#define mem8(addr) (*(u8*)(addr))
#define mem16(addr) (*(u16*)(addr))
#define mem32(addr) (*(u32*)(addr))
I/O 접근을 위한 메크로 정의
#define io8(addr) (*(volatile u8 *)(addr))
#define io16(addr) (*(volatile u16 *)(addr))
#define io32(addr) (*(volatile u32 *)(addr))
volatile 접근 수정자는 저장되는 내용이 보존되지 않을 수 있음을 의미한다.
컴파일러는 이 변수에 대해서 최적화 하지 않는다.
BIT Field Structure
struct io_word{
unsigned short x:7;
unsigned short y:6;
unsigned short z:3;
}